const Koa = require("koa");
// 注意require('koa-router')返回的是函数:
const router = require("koa-router")();
// 解析request的body的功能(post请求)
const bodyParser = require("koa-bodyparser");
// 处理静态文件
const serve = require("koa-static");
var cors = require("koa2-cors");
const { gernateRandomOnlyStr } = require("./tool");
const app = new Koa();
app.use(cors());
app.use(async (ctx, next) => {
  console.log(
    `I am logger,your method is${ctx.method}`,
    `request url is ${ctx.url}`
  );
  await next();
});

// 添加 url映射(:hello URL命名参数 )
router.get("/:hello/:name", async (ctx, next) => {
  const { hello, name } = ctx.params;
  ctx.body = `<h1>${hello}, ${name}</h1>`;
});

router.get("/login", async (ctx, next) => {
  if (ctx.request.query) {
    // 这个就是前端会给我的数据。但是这个后端的不限语言，
    //后面你们要学的php就是写后端的
    // 我这里这个只是做一个实例
    // 任何语言都可以做后端，不用纠结
  }
  // 这里就是我给前端的数据
  ctx.body = {
    username: "tom",
    age: 18,
  };
});

router.post("/login", async (ctx, next) => {
  const rb = ctx.request.body;
  ctx.response.body = {
    code: 1,
    data: {
      token: gernateRandomOnlyStr(8080),
    },
  };
});

//__dirname+ “/static/html” 表示静态文件存放的路径，
//当接收到请求后，会在该路径下进行查找，serve还可以接收一个对象，表示查找文件的后缀名
app.use(serve(__dirname + "/static/html", { extensions: ["html"] }));
//由于middleware的顺序很重要，这个koa-bodyparser必须在router之前被注册到app对象上
app.use(bodyParser());
app.use(router.routes());

app.listen(3000, () => {
  console.log(
    "server start success,listen on 3000,you can preview by http://127.0.0.1:3000"
  );
});
